﻿namespace DimensionsHelper.LanguageService.Syntax;

/// <summary>
///     此类型不作为语法节点定义，为了方便访问，此类可以聚合不同Area定义的语法节点。
///     添加到此集合中时，需要同时添加到对应节点的子节点列表中。
/// </summary>
public class MetadataArealCollection<T> where T : MetadataArealObject
{
    private SyntaxList<T>? _items;


    /// <summary>
    ///     已保存的元素列表
    /// </summary>
    public IReadOnlyList<T> GetItems()
    {
        return _items == null ? new List<T>() : _items;
    }


    /// <summary>
    ///     在集合末尾添加一个新的列表
    /// </summary>
    public void Add(T item)
    {
        _items ??= [];
        _items.Add(item);
    }
}